package com.zxw.设计模式.设计原则.里氏替换;

import java.math.BigDecimal;

/**
 * @projectName: util-cloud
 * @package: com.zxw.设计模式.设计原则.里氏替换
 * @className: Contest
 * @author: zhangxuewei
 * @description: TODO
 * @date: 2023/4/24 16:38
 * @version: 1.0
 */
public class Context {

    //使用基类定义对象变量
    private Istrategy strategy;

    // 注入当前活动使用的具体对象
    public void setStrategy(Istrategy strategy) {
        this.strategy = strategy;
    }

    // 计算并返回费用
    public double cul(double consumePrice) {
        // 使用具体商品促销策略获得实际消费金额
        double realPrice =
                this.strategy.realPrice(consumePrice);
        // 格式化保留小数点后1位，即：精确到角
        BigDecimal bd = new BigDecimal(realPrice);
        bd = bd.setScale(1, BigDecimal.ROUND_DOWN);
        return bd.doubleValue();
    }
}
